[HEADING=2]NetworkSwitcher[/HEADING]
Консольная программа для Windows, которая переключает сеть между двумя адаптерами по их именам.

[HEADING=2]Что делает[/HEADING]
[LIST=1]
[*]Позволяет переключиться между двумя сетевыми адаптерами - один адаптер отключается, а второй включается. При повторном запуске программы происходит наоборот - первый адаптер включается, а второй отключается. Имена адаптеров читаются из [ICODE]adapters.json[/ICODE].
[*]Сбрасывает кэш DNS и показывает, какой адаптер теперь активен.
[/LIST]

[HEADING=2]Настройка[/HEADING]
Файл [ICODE]adapters.json[/ICODE] лежит рядом с [ICODE]SwitchAdapter.exe[/ICODE]:
[CODE]
{
  "Adapter1": "Подключение по локальной сети",
  "Adapter2": "Беспроводное сетевое соединение 5"
}
[/CODE]
При запуске программы будет создан файл [ICODE]adapter-names.txt[/ICODE]. Отсюда вы можете взять точные имена для вставки в настройки [ICODE]adapters.json[/ICODE].

[LIST]
[*]Имена должны точно совпадать с именами в окне «Сетевые подключения» ([ICODE]ncpa.cpl[/ICODE]) — регистр и пробелы важны. Имя нужно брать не из имён под пиктограммой, а в свойствах подключения (они могут отличаться).
[/LIST]

[HEADING=2]Требования[/HEADING]
[LIST]
[*]Windows 7 или новее (x64 или x86)
[*][URL='https://dotnet.microsoft.com/ru-ru/download/dotnet/10.0'].NET 10 Desktop Runtime[/URL] (разрядность должна совпадать с версией программы: x64 или x86)
[*]Права администратора
[/LIST]

[HEADING=2]Сборка[/HEADING]
[LIST]
[*]Требуется [URL='https://dotnet.microsoft.com/ru-ru/download/dotnet/10.0'].NET 10 SDK[/URL]
[*]Запустите [ICODE]build.bat[/ICODE] — он собирает версии x64 и x86 в папки [ICODE]publish\x64[/ICODE] и [ICODE]publish\x86[/ICODE]
[*]Для разработки откройте [ICODE]NetworkSwitcher.slnx[/ICODE] в Visual Studio 2026
[/LIST]

[HEADING=2]Состояние адаптера[/HEADING]
Состояние берётся из WMI-свойства [ICODE]ConfigManagerErrorCode[/ICODE] (0 — включён, 22 — отключён), а не из [ICODE]NetEnabled[/ICODE]: [ICODE]NetEnabled[/ICODE] возвращает [ICODE]False[/ICODE] и для включённого адаптера без подключения к сети (например, Wi-Fi вне зоны действия).

[HEADING=2]Зависимости (NuGet)[/HEADING]
[LIST]
[*][ICODE]System.Management[/ICODE] 10.0.13 (Microsoft) — доступ к WMI. Исходный код: [URL]https://github.com/dotnet/runtime/tree/main/src/libraries/System.Management[/URL]
[/LIST]
JSON обрабатывается встроенным в .NET [ICODE]System.Text.Json[/ICODE] (отдельный пакет не нужен).

Для включения/выключения используется WMI ([ICODE]Win32_NetworkAdapter[/ICODE]), для сброса DNS — WinAPI ([ICODE]dnsapi.dll[/ICODE]). Никакие встроенные утилиты Windows ([ICODE]netsh[/ICODE], [ICODE]wmic[/ICODE], [ICODE]ipconfig[/ICODE], PowerShell и т. п.) не запускаются.

[HEADING=2]Другие реализации[/HEADING]
В комплекте несколько реализаций (на разных языках), которые делают одно и то же. Рекомендуется версия на C#. Скриптовые версии в отличие от C# запускают встроенные утилиты wmic, netsh, ipconfig.
